package cn.neusoft.servlet;

import cn.neusoft.bean.User;
import cn.neusoft.query.UserQuery;
import cn.neusoft.service.IUserService;
import cn.neusoft.service.impl.UserService;
import cn.neusoft.utils.IOUtils;
import cn.neusoft.utils.JsonUtils;
import cn.neusoft.vo.ResultBean;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@WebServlet("/user")
public class UserServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("------UserServlet--------");

        IUserService userService = new UserService();
        String what = req.getParameter("what");

        //最终的响应体对象
        ResultBean resultBean = null;

        try {
            /*
            save表示添加或者修改：
              添加没有主键
              修改有主键
             */
            if ("save".equals(what)) {
                System.out.println("添加或修改购物车");
                //读取输入流中的json字符串(请求体的内容)
                String jsonStr = IOUtils.readStr(req.getInputStream());
                //将json字符串转成User对象
                User user = JsonUtils.jsonStrToObj(jsonStr,"yyyy-MM-dd", User.class);
                //判断User中有没有主键
                if(user.getId()==null){
                    resultBean = userService.add(user);
                }else{
                    resultBean = userService.update(user);
                }
            } else if ("del".equals(what)) {
                //http://localhost:8080/User?what=del&id=1001
                System.out.println("删除餐品");
                String id = req.getParameter("id");
                resultBean = userService.delete(Integer.parseInt(id));
            } else if ("getById".equals(what)) {
                System.out.println("通过id查询餐品");
                String id = req.getParameter("id");
                resultBean = userService.getById(Integer.parseInt(id));
            } else if ("page".equals(what)) {
                System.out.println("分页搜索餐品");
                /*
                  请求体---->UserQuery
                  {
                    pageNow: 1,
                    pageCount: 5,
                    foodId: "小吃编号",
                  }
                 */
                String jsonStr = IOUtils.readStr(req.getInputStream());
                UserQuery userQuery = JsonUtils.jsonStrToObj(jsonStr, null, UserQuery.class);
                resultBean = userService.getByPage(userQuery);

            } else if ("bathDel".equals(what)) {
                //批量删除获取
                String jsonStr = IOUtils.readStr(req.getInputStream());
                JSONArray jsonArray = JSONObject.parseArray(jsonStr);
                List<Integer> ids = jsonArray.toJavaList(Integer.class);
                System.out.println("json转集合："+ids);
                resultBean = userService.bathDel(ids);
            } else {
                System.out.println("无服务");
                resultBean = ResultBean.ERROR("no service");
            }
        }catch (Exception e){
            e.printStackTrace();
            resultBean = ResultBean.ERROR(e.getMessage());
        }

        //将resultBean转成json字符串响应即可
        String resultJsonStr = JSONObject.toJSONString(resultBean);
        resp.getWriter().write(resultJsonStr);

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}
